<?php

namespace Unl\HomologacionBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;




/**
* @ORM\Entity(repositoryClass="Unl\HomologacionBundle\Repository\UnidadRepository")
*/
class Unidad
{
    /**
    * @ORM\Id
    * @ORM\Column(type="bigint")
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    protected $id;

    /**
    * @ORM\Column(type="string", length=255)
    * @Assert\NotBlank(message = "Debe ingresar Nombre de Unidad.")
    */
    protected $nombre;

    /**
    * @ORM\Column(type="integer",length=4, nullable=true)
    
    * @Assert\Type(type="integer", message="El valor {{ value }} no es un {{ type }} válido.")
    */
    protected $anio;


    /**
    * @ORM\Column(type="integer",length=4)
    * @Assert\NotBlank(message = "Debe ingresar Numero de Creditos.") 
    */
    protected $numeroCreditos;

    /**
    * @ORM\Column(type="integer",length=4)
    * @Assert\NotBlank(message = "Debe ingresar Numero de Horas.") 
    * @Assert\Type(type="integer", message="El valor {{ valor }} no es un {{ tipo }} válido.")
    */
    protected $numeroHoras;

    /**
    * @ORM\Column(type="boolean")
    */
    protected $esObligatoria;


    /**
    * @ORM\ManyToOne(targetEntity="Modulo", inversedBy="unidades")
    * @ORM\JoinColumn(name="modulo_id", referencedColumnName="id")
    */
    protected $modulo;

    /**
    * @ORM\OneToMany(targetEntity="Tema", mappedBy="unidad", cascade={"all"}, orphanRemoval=true)
    */
    protected $temas;

    public function __construct()
    {
        $this->temas = new \Doctrine\Common\Collections\ArrayCollection();
        $this->esObligatoria = FALSE;
    }
    
    /**
     * Get id
     *
     * @return bigint 
     */
    public function getId()
    {
        return $this->id;
    }
    
    /**
     * Set id
     *
     * @param string $id
     */
    public function setId($id)
    {
        $this->id = $id;
    }    

    /**
     * Set nombre
     *
     * @param string $nombre
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;
    }

    /**
     * Get nombre
     *
     * @return string 
     */
    public function getNombre()
    {
        return $this->nombre;
    }

    /**
     * Set anio
     *
     * @param integer $anio
     */
    public function setAnio($anio)
    {
        $this->anio = $anio;
    }

    /**
     * Get anio
     *
     * @return integer 
     */
    public function getAnio()
    {
        return $this->anio;
    }

   
    /**
     * Set numeroCreditos
     *
     * @param integer $numeroCreditos
     */
    public function setNumeroCreditos($numeroCreditos)
    {
        $this->numeroCreditos = $numeroCreditos;
    }

    /**
     * Get numeroCreditos
     *
     * @return integer 
     */
    public function getNumeroCreditos()
    {
        return $this->numeroCreditos;
    }

    /**
     * Set numeroHoras
     *
     * @param integer $numeroHoras
     */
    public function setNumeroHoras($numeroHoras)
    {
        $this->numeroHoras = $numeroHoras;
    }

    /**
     * Get numeroHoras
     *
     * @return integer 
     */
    public function getNumeroHoras()
    {
        return $this->numeroHoras;
    }

    

    /**
     * Set modulo
     *
     * @param Unl\HomologacionBundle\Entity\Modulo $modulo
     */
    public function setModulo($modulo)
    {
        $this->modulo = $modulo;
    }

    /**
     * Get modulo
     *
     * @return Unl\HomologacionBundle\Entity\Modulo 
     */
    public function getModulo()
    {
        return $this->modulo;
    }

    /**
     * Add temas
     *
     * @param Unl\HomologacionBundle\Entity\Tema $temas
     */
    public function addTema(\Unl\HomologacionBundle\Entity\Tema $tema)
    {
         $this->temas->add($tema);
        $tema->setUnidad($this);
      
    }
    
     /**
     * Set temas
     *
     * @param Unl\HomologacionBundle\Entity\Tema $temas
     */
    
   
    public function setTemas($temas)
    {
        foreach ($temas as $tema) {
            $tema->setUnidad($this);
        }
        $this->temas = $temas;
    }


    /**
     * Get temas
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getTemas()
    {
        return $this->temas;
    }

    public function __toString()
    {
        return $this->id.' '.$this->nombre;
    }
    
    

    /**
     * Set esObligatoria
     *
     * @param boolean $esObligatoria
     */
    public function setEsObligatoria($esObligatoria)
    {
        $this->esObligatoria = $esObligatoria;
    }

    /**
     * Get esObligatoria
     *
     * @return boolean 
     */
    public function getEsObligatoria()
    {
        return $this->esObligatoria;
    }
}